//package com.chalk.config.rabbit.init;
//
//
//import com.chalk.common.constant.CommonConstants;
//import com.chalk.common.util.RedisUtil;
//import com.chalk.common.util.SensitiveWordUtil;
//import com.chalk.model.ActivityItem;
//import com.chalk.model.SensitiveWord;
//import com.chalk.service.ActivityItemService;
//import com.chalk.service.SensitiveWordService;
//import com.chalk.vo.ActivityItemVo;
//import io.protostuff.LinkedBuffer;
//import io.protostuff.ProtostuffIOUtil;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.CommandLineRunner;
//import org.springframework.stereotype.Component;
//
//import java.util.Calendar;
//import java.util.List;
//
///**
// * 系统初始化
// * @author Zhaob
// */
////@Component
//public class InitTask implements CommandLineRunner {
//
//    private static final Logger logger = LoggerFactory.getLogger(InitTask.class);
//
//    @Autowired
//    private RedisUtil redisUtil;
//    @Autowired
//    private ActivityItemService activityItemService;
//    @Autowired
//    private SensitiveWordService sensitiveWordService;
//
//
//    @Override
//    public void run(String... args) throws Exception {
//        // 项目启动初始化秒杀数据
//        initKillItemForRedis();
//        //初始化敏感词
//        initSensitiveWord();
//    }
//
//    /**
//     * 预热秒杀数据到Redis
//     */
//    private void initKillItemForRedis() {
//        ActivityItemVo vo = new ActivityItemVo();
//        vo.setNowTime(Calendar.getInstance().getTime());
//        vo.setIsDeleted(CommonConstants.IsDeleted.NOTDEL.getValue());
//        List<ActivityItemVo> list = activityItemService.selectKillItemList(vo);
//        if (list != null && list.size() > 0) {
//            list.forEach(dto -> {
//                this.insertRedisItem(dto);
//            });
//        }
//        logger.info("Redis缓存数据初始化完毕！");
//    }
//
//    public void insertRedisItem(ActivityItem dto){
//        //秒杀表数据
//        String activityItemId = CommonConstants.ACTIVITY_ITEM_ID + dto.getItemId();
//        redisUtil.set(activityItemId,dto.getId());
//        // 添加秒杀商品id
//        redisUtil.sAdd(CommonConstants.SECOND_KILL_ITEM_ID, dto.getItemId());
//        // 设置秒杀库存
//        String inventoryKey = CommonConstants.SECOND_KILL_INVENTORY + dto.getItemId();
//        if(null != dto.getActivityCount()){
//            redisUtil.set(inventoryKey, dto.getActivityCount());
//        }
//        // 设置活动商品
//        String killGoodsKey = CommonConstants.SECOND_KILL_GOODS + dto.getItemId();
//        MyRuntimeSchema schema = new MyRuntimeSchema<>(ActivityItemVo.class);
//        byte[] activityItemBytes = ProtostuffIOUtil.toByteArray(dto, schema.getGoodsRuntimeSchema(), LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));
//        redisUtil.set(killGoodsKey, activityItemBytes);
//        redisUtil.delete((CommonConstants.BOUGHT_USERS+dto.getItemId()));
//        redisUtil.delete((CommonConstants.QUEUE_PRE_KILL+dto.getItemId()));
//    }
//
//    /**
//     * 初始化敏感词
//     */
//    private void initSensitiveWord(){
//        List<String> list = sensitiveWordService.selectList(new SensitiveWord());
//        if(null != list && list.size() > 0){
//            SensitiveWordUtil.initMap(list);
//        }
//    }
//}
